package dao

import (
	"time"
)

// 这是 Favorite 的全局公开dao对象，被service层调用!
var FavoriteDao = favoriteDao{}

// 用户收藏
// 这是 favorite表 的实体类,这个实体类中的字段可以减少，但是不能在其基础上增加!
type Favorite struct {
	Uid     int32     `json:"uid" form:"uid" db:"uid" v:"uid"`                     // 用户uid
	ObjType int8      `json:"obj_type" form:"obj_type" db:"obj_type" v:"obj_type"` // 类型,0-帖子,1-博文,2-资源,3-wiki
	ObjId   int32     `json:"obj_id" form:"obj_id" db:"obj_id" v:"obj_id"`         // 对象id，属主
	Ctime   time.Time `json:"ctime" form:"ctime" db:"ctime" v:"ctime"`
}

// 注意:这是 Favorite 的私有dao对象，只能在dao层内使用!
type favoriteDao struct {
	InsertTemplate func(arg Favorite) (int64, error)          //插入一条记录
	UpdateTemplate func(arg Favorite) (int64, error)          //更新一条记录
	DeleteTemplate func(id int64) (int64, error)              `arg:"id"` //根据传入的主键删除一条记录
	SelectTemplate func(id int64) (Favorite, error)           `arg:"id"` //根据传入的主键获取一条记录
	List           func(arg FavoriteList) ([]Favorite, error) //模糊分页查询
}

/*
// 这是 favorite 表的Postman测试参数
// 该结构体中的字段就是: 前后端交互的json字段!
type FavoritePostman struct {
uid
obj_type
obj_id
ctime

}*/

// 这是 favorite 表的批量请求参数
type FavoriteReq struct {
	List []Favorite `json:"list" form:"list"`
}

// 这是 favoriteDao.List()方法的请求参数
type FavoriteList struct {
	Page
}
